﻿using IMark.DAO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace IMark
{
    public partial class ThanhToanStep3 : System.Web.UI.Page
    {
        static String email = "baymaxshops@gmail.com";
        static String password = "12345abc?";
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                if (Session["User"] == null && Session["kh"] == null)
                    Response.Redirect("ThanhToanStep1.aspx");
            }
            if(Request.QueryString["paymentmethod"]!=null)
            {
                EMartEntities db = new EMartEntities();
                string paymentmethod = Request.QueryString["paymentmethod"].ToString();
                string Comment = Request.QueryString["comments"];
                KHACH_HANG kh = new KHACH_HANG(); ;
                if (Session["User"] != null)
                    kh = Session["User"] as KHACH_HANG;
                else if (Session["kh"] != null)
                    kh = Session["kh"] as KHACH_HANG;
                Dictionary<long, SAN_PHAM> Cart = Session["Cart"] as Dictionary<long, SAN_PHAM>;
                HOA_DON hd = new HOA_DON();
                if (paymentmethod == "1")
                {
                    long? tt = 0;
                    foreach (KeyValuePair<long, SAN_PHAM> item in Cart)
                    {
                        SAN_PHAM sp = db.SAN_PHAM.Single(s => s.ID == item.Key);
                        sp.SoLuong = sp.SoLuong - item.Value.SoLuong;
                        db.SaveChanges();
                        if (item.Value.NgayBatDau <= DateTime.Now && item.Value.NgayKetThuc >= DateTime.Now)
                        {
                            long? thanhtien = (item.Value.DonGia - ((item.Value.DonGia * item.Value.GiamGia) / 100)) * item.Value.SoLuong;
                            tt += thanhtien;
                        }
                        else
                        {
                            tt += item.Value.DonGia * item.Value.SoLuong;
                        }
                    }
                    tt = tt + ((tt * 10) / 100);
                    
                    hd.DiaChi = kh.DiaChi;
                    hd.NgayDat = DateTime.Now;
                    hd.HoTen = kh.HoTen;
                    hd.Email = kh.Email;
                    hd.DienThoai = kh.DienThoai;
                    hd.TrangThai = 0;
                    hd.GhiChu = Comment;
                    if (kh.ID != null && kh.ID != 0)
                        hd.MaKH = kh.ID;
                    hd.ThanhTien = double.Parse(tt.ToString());
                    hd.PhuongThucThanhThoan = "COD";//Thanh toán khi nhận hàng
                }
                    
                else
                {
                    //hd.PhuongThucThanhThoan = "Card";
                }
                    
                db.HOA_DON.Add(hd);
                db.SaveChanges();

                foreach (KeyValuePair<long, SAN_PHAM> item in Cart)
                {
                    CHI_TIET_HD cthd = new CHI_TIET_HD();
                    cthd.MaHD = hd.MaHD;
                    cthd.IDSanPham = item.Key;
                    cthd.SoLuong = item.Value.SoLuong;
                    cthd.DonGia = item.Value.DonGia;
                    if (item.Value.GiamGia != null)
                        cthd.GiamGia = int.Parse(item.Value.GiamGia.ToString());
                    db.CHI_TIET_HD.Add(cthd);
                    db.SaveChanges();
                }
                if (Request.QueryString["DangKy"].ToString() == "on")
                {
                    DANG_KY_NHAN_MAIL dk = new DANG_KY_NHAN_MAIL();
                    dk.Email = kh.Email;
                    dk.DiaChi = kh.DiaChi;
                    dk.HoTen = kh.HoTen;
                    dk.TrangThai = 1;
                    db.DANG_KY_NHAN_MAIL.Add(dk);
                    db.SaveChanges();
                }

                Utils.SendGMail(hd.Email, MailTemplate(Cart, hd), "Baymax đã nhận đơn hàng");
                //Send(email, hd.Email, "Baymax đã nhận đơn hàng", MailTemplate(Cart, hd));
                Response.Redirect("LandingPage.aspx");
            }
        }

        
        public static void Send(String from, String to, String subject, String body)
    {
        MailMessage mail = new MailMessage();
        mail.From = new MailAddress(from);
        mail.ReplyTo = new MailAddress(from);
        mail.To.Add(new MailAddress(to));
        mail.Subject = subject;
        mail.Body = body;
        mail.IsBodyHtml = true;

        
        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
        client.EnableSsl = true;
        client.UseDefaultCredentials = false;
        client.Credentials = new NetworkCredential(email, password);
        client.Send(mail);
    }
        private string MailTemplate(Dictionary<long, SAN_PHAM> Cart ,HOA_DON hd)
        {
            KHACH_HANG kh = new KHACH_HANG(); ;
                if(Session["User"]!=null)
                    kh= Session["User"] as KHACH_HANG;
                else if(Session["kh"]!=null)
                    kh = Session["kh"] as KHACH_HANG;
            StringBuilder str = new StringBuilder();
            str.Append("<table width='600' cellpadding='0' cellspacing='0' border='0' align='center'>");
            str.Append("<tr>");
            str.Append("<td>");
            str.Append("<div style='float: left;width: 235px;display: table;'>");
            str.Append("<a href='Default.aspx' title='Baymax'>");
            str.Append("<img src='http://'"+Request.Url.Host.ToLower()+"/images/logo2.png' />");
            str.Append("</div>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td>");
            str.Append("<table width='100%' border='0' cellspacing='0' cellpadding='0'>");
            str.Append("<tbody>");
            str.Append("<tr>");
            str.Append("<td align='center' valign='top' style='padding: 8px; background-color: red'>");
            str.Append("<table width='630' border='0' cellspacing='5' cellpadding='5'>");
            str.Append("<tbody>");
            str.Append("<tr>");
            str.Append("<td valign='top' bgcolor='#ffffff' style='padding: 15px; font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000; line-height: 18px;'>");
            str.Append("<table width='600' border='0' align='center' cellpadding='0' cellspacing='0'>");
            str.Append("<tbody>");
            str.Append("<tr>");
            str.Append("<td valign='top' style='font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 18px;'>");
            str.Append("<p style='padding: 0 0 5px; border-bottom: 1px solid #cccccc; font-size: 18px;'>Baymax đã  nhận đơn hàng "+hd.MaHD+"");
            if(hd.PhuongThucThanhThoan=="COD")
                str.Append("(Thanh toán khi nhận hàng - COD) </p>");
            else
                str.Append("(Thanh toán qua thẻ tín dụng - CARD) </p>");
            str.Append("<p style='padding: 0;'>Kính chào quý khách <strong></strong><strong>"+hd.HoTen+"</strong>,</p>");
            str.Append("<p style='padding: 0;'>Cám ơn quý khách đã mua sắm tại baymax, trang thương mại điện tử hàng đầu tại Việt Nam!</p>");
            str.Append("<p>baymax vừa nhận được đơn hàng của quý khách và đang tiến hành xác nhận thông tin. Thời gian dự kiến giao hàng sẽ được thông báo đến quý khách trong nội dung email  tiếp theo.</p>");
            str.Append("<p>Mã số đơn hàng của quý khách là <strong>"+hd.MaHD+"</strong>, quý khách vui lòng ghi chú lại để tiện theo dõi thông tin cập nhật. ");
            str.Append("Quá trình thực hiện đơn hàng sẽ được liên tục cập nhật  qua email. </p>");
            str.Append("<p>Sau đây là thông tin chi tiết về đơn hàng:</p>");
            str.Append("<p align='right' style='font-size: 11px; padding: 0;'>Được đặt lúc: &nbsp;"+hd.NgayDat+"</p>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td valign='top'>");
            str.Append("<table width='100%' border='1' cellspacing='0' cellpadding='5' style='border: 1px solid #dee2e3;'>");
            str.Append("<tbody>");
            str.Append("<tr>");
            str.Append("<td colspan='5' align='right' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3; font-weight: bold; text-align: left;'>");
            str.Append("<div align='left'><span style='padding: 5px;'>Mã số đơn hàng: "+hd.MaHD+" </span></div>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; background: #dceff5; font-weight: bold;'>Sản Phẩm</td>");
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; background: #dceff5; font-weight: bold;width:20%'>Giá(VNĐ)</td>");
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; background: #dceff5; font-weight: bold;width:16%'>Số Lượng</td>");
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; background: #dceff5; font-weight: bold;width:25%;text-align:right'>Thành Tiền(VNĐ)</td>");
            str.Append("</tr>");
            long? TongTien = 0;
            foreach (KeyValuePair<long, SAN_PHAM> item in Cart)
            {
                long? thanhtien=0;
                long? Gia=0;
                if (item.Value.NgayBatDau <= DateTime.Now && item.Value.NgayKetThuc >= DateTime.Now)
                {
                    thanhtien = (item.Value.DonGia - ((item.Value.DonGia * item.Value.GiamGia) / 100)) * item.Value.SoLuong;
                    Gia =(item.Value.DonGia * item.Value.GiamGia) / 100;
                    TongTien+=thanhtien;
                }
                else
                {
                    thanhtien=item.Value.DonGia * item.Value.SoLuong;
                    Gia = item.Value.DonGia;
                    TongTien+=thanhtien;
                }
                    
                str.Append("<tr>");
                str.Append("<td valign='top' style='font-size: 11px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3;'>"+item.Value.TenSanPham+"</td>");
                str.Append("<td valign='top' style='font-size: 11px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3;width:20%'>"+Gia+"</td>");
                str.Append("<td valign='top' style='font-size: 11px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3;width:16%'>"+item.Value.SoLuong+"</td>");
                str.Append("<td valign='top' style='font-size: 11px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3;width:25%;text-align:right'>"+thanhtien+"</td>");
                str.Append("</tr>");
            }
            str.Append("<tr>");
            str.Append("<td colspan='3' align='right' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;'>");
            str.Append("<div align='right'>Tổng Tiền</div>");
            str.Append("</td>");
            str.Append("<td colspan='2' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif;'>");
            str.Append("<div align='right'>"+TongTien+"</div>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td colspan='3' align='right' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;'>");
            str.Append("<div align='right'>VAT(10%)</div>");
            str.Append("</td>");
            str.Append("<td colspan='2' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif;'>");
            str.Append("<div align='right'>"+TongTien*10/100+"</div>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("<tr>");     
            str.Append("<td colspan='3' align='right' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; font-weight: bold;'>");
            str.Append("<div align='right'>Giảm giá (Voucher)</div>");
            str.Append("</td>");     
            str.Append("<td colspan='2' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif;'>");
            str.Append("<div align='right'>0.00</div>");            
            str.Append("</td>");     
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td colspan='3' align='right' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3;'>");           
            str.Append("<div align='right'><strong>Tổng cộng</strong></div>");
            str.Append("</td>");
            str.Append("<td colspan='2' valign='top' style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; border-bottom: 1px solid #dee2e3; font-weight: bold;'>");
            str.Append("<div align='right'>"+hd.ThanhTien+"</div>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("</tbody>");
            str.Append("</table>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td><br />");
            str.Append("<table  width='100%' border='0' cellspacing='5' cellpadding='0'>");
            str.Append("<tr>");
            str.Append("<td style='vertical-align:top'>");
            str.Append("<table style='border: 1px solid #dee2e3;' width='100%' border='0' cellspacing='0' cellpadding='0'>");
            str.Append("<tbody>");
            str.Append("<tr>");
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; background: #dceff5; font-weight: bold; text-align: center;'>Thông Tin Giao Nhận</td>");
            str.Append("</tr>");
            str.Append("<tr>");
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif;'>");
            str.Append("<p>"+hd.DiaChi+"</p>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("</tbody>");
            str.Append("</table>");
            str.Append("</td>");
            str.Append("<td style='vertical-align:top'>");
            str.Append("<table style='border: 1px solid #dee2e3;' width='100%' border='0' cellspacing='0' cellpadding='0'>");                                                                           
            str.Append("<tbody>");                                                                               
            str.Append("<tr>");                                                                           
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif; background: #dceff5; font-weight: bold; text-align: center;'>Thông Tin Liên Hệ</td>");
            str.Append("</tr>");                                                                           
            str.Append("<tr>");                                                                               
            str.Append("<td style='font-size: 12px; font-family: Arial, Helvetica, sans-serif;'>");                                                                           
            str.Append("<p>"+hd.HoTen+"</p>");
            str.Append("<p>"+kh.Email+"</p>");                                                                           
            str.Append("<p>"+kh.DienThoai+"</p>");                                                                               
            str.Append("</td>");                                                                           
            str.Append("</tr>");
            str.Append("</tbody>");                                                      
            str.Append("</table>");                                                                  
            str.Append("</td>");                                                                     
            str.Append("</tr>");                                                                         
            str.Append("</table>");
            str.Append("</td>");                         
            str.Append("</tr>");                       
            str.Append("</tbody>");                            
            str.Append("</table>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("</tbody>");
            str.Append("</table>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("</tbody>");
            str.Append("</table>");
            str.Append("</td>");
            str.Append("</tr>");
            str.Append("</table>");
            return str.ToString();
        }
    }
}